﻿//Auktionshus projekt, DM10X2, Anders Østergaard, Jesper Larsen og Mads Jakobsen, 19.9.2011

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Sockets;
using System.Net;
using System.IO;

namespace Klient
{
    public class StartKlient
    {
        public delegate void ModtagBeskedHandler(string ip, string besked);         // Definering af delegat (type) - aktiverer de metoder man vil aktivere
        public event ModtagBeskedHandler ModtagBeskedEvent;        // Definer metode "pegepind"

            StreamReader reader;
            StreamWriter writer; 
            string text;
            bool stop = false;
            bool stop2 = true;

            public StartKlient(string servernavn, int port)
            {
                //Instantiér socket - forbinder socket til server                
                TcpClient server = new TcpClient(servernavn, port);

                //Opsæt input og output streams
                NetworkStream stream = server.GetStream();
                reader = new StreamReader(stream);
                writer = new StreamWriter(stream);
            }

            public string BeskedFraServer() // Metode, som bruges udelukkende til at modtage beskeder(stream-reader) fra serveren
            {
                try
                {
                    return reader.ReadLine();
                }
                catch
                {
                    return null; // Når serveren ingenting sender, returneres null
                }
            }

            public void Besked()
            {

                    while (!stop) // Guarded suspension
                    {
                        string ip = BeskedFraServer();
                        string besked = BeskedFraServer();
                        if (besked.EndsWith("afmeldt")) // Hvis klienten modtager afmeldt, skal den stoppe beskedmodtagelsen(guarded suspension).
                        {
                            stop = true;
                        }
                        ModtagBeskedEvent(ip, besked);
                    }
                
            }

            public void SendBud(string besked) // Ved budangivelse, bruges streamwriter for at sende buddet til serveren.
            {
                writer.WriteLine(besked); // Skriver tekst til serveren
                writer.Flush(); // Tømmer tcp-bufferen
            }

            public void StopSignal() // Skal tilgås udefra f.eks. når klienten framelder sig auktionen.
            {
                stop = false;
            }
    }
}
